﻿using Caliburn.Micro;
using SD.Infrastructure.WPF.Caliburn.Aspects;
using System;
using System.Collections.ObjectModel;
using SlamDunk.ValueObjects.Enums;

namespace SlamDunk.MES.Presentation.Models.NotifyModels
{
    /// <summary>
    /// 作业计划物料使用概要
    /// </summary>
    public class MaterialSummaryNm : PropertyChangedBase
    {
        #region 物料定义Id —— Guid MaterialId
        /// <summary>
        /// 物料定义Id
        /// </summary>
        [DependencyProperty]
        public Guid MaterialId { get; set; }
        #endregion

        #region 物料定义编号 —— string MaterialNo
        /// <summary>
        /// 物料定义编号
        /// </summary>
        [DependencyProperty]
        public string MaterialNo { get; set; }
        #endregion

        #region 物料定义名称 —— string MaterialName
        /// <summary>
        /// 物料定义名称
        /// </summary>
        [DependencyProperty]
        public string MaterialName { get; set; }
        #endregion

        #region 物料批次Id —— Guid? MaterialLotId
        /// <summary>
        /// 物料批次Id
        /// </summary>
        [DependencyProperty]
        public Guid? MaterialLotId { get; set; }
        #endregion

        #region 供应商Id? —— Guid? SupplierId
        /// <summary>
        /// 供应商Id
        /// </summary>
        [DependencyProperty]
        public Guid? SupplierId { get; set; }
        #endregion

        #region 供应商编号 —— string SupplierNo
        /// <summary>
        /// 供应商编号
        /// </summary>
        [DependencyProperty]
        public string SupplierNo { get; set; }
        #endregion

        #region 供应商名称 —— string SupplierName
        /// <summary>
        /// 供应商名称
        /// </summary>
        [DependencyProperty]
        public string SupplierName { get; set; }
        #endregion

        #region 生产批号 —— string ProductionBatchNo
        /// <summary>
        /// 生产批号
        /// </summary>
        [DependencyProperty]
        public string ProductionBatchNo { get; set; }
        #endregion

        #region 生产日期 —— DateTime? ProducedDate
        /// <summary>
        /// 生产日期
        /// </summary>
        [DependencyProperty]
        public DateTime? ProducedDate { get; set; }
        #endregion

        #region 保质期 —— TimeSpan? GuaranteePeriod
        /// <summary>
        /// 保质期
        /// </summary>
        [DependencyProperty]
        public TimeSpan? GuaranteePeriod { get; set; }
        #endregion

        #region 过期日期 —— DateTime? ExpiredDate
        /// <summary>
        /// 过期日期
        /// </summary>
        [DependencyProperty]
        public DateTime? ExpiredDate { get; set; }
        #endregion

        #region 接收日期 —— DateTime? ReceptionDate
        /// <summary>
        /// 接收日期
        /// </summary>
        [DependencyProperty]
        public DateTime? ReceptionDate { get; set; }
        #endregion

        #region 规格 —— string Specification
        /// <summary>
        /// 规格
        /// </summary>
        [DependencyProperty]
        public string Specification { get; set; }
        #endregion

        #region 物料来源 —— MaterialSourceType? MaterialSourceType
        /// <summary>
        /// 物料来源
        /// </summary>
        [DependencyProperty]
        public MaterialSourceType? MaterialSourceType { get; set; }
        #endregion

        #region 数量 —— decimal Quantity
        /// <summary>
        /// 数量
        /// </summary>
        [DependencyProperty]
        public decimal Quantity { get; set; }
        #endregion

        #region 数量单位编号 —— string QuantityUnitNo
        /// <summary>
        /// 数量单位编号
        /// </summary>
        [DependencyProperty]
        public string QuantityUnitNo { get; set; }
        #endregion

        #region 开始时间 — DateTime PlanStartTime
        /// <summary>
        /// 开始时间
        /// </summary>
        [DependencyProperty]
        public DateTime? PlanStartTime { get; set; }
        #endregion

        #region 结束时间 — DateTime PlanEndTime
        /// <summary>
        /// 结束时间
        /// </summary>
        [DependencyProperty]
        public DateTime? PlanEndTime { get; set; }
        #endregion

        #region 作业计划Id —— Guid ExecutionPlanId
        /// <summary>
        /// 作业计划Id
        /// </summary>
        [DependencyProperty]
        public Guid ExecutionPlanId { get; set; }
        #endregion

        #region 作业计划列表 —— ObservableCollection<MaterialSummaryDetailtReportInfo> ExecutionPlanList
        /// <summary>
        /// 作业计划列表
        /// </summary>
        [DependencyProperty]
        public ObservableCollection<MaterialSummaryDetailNm> ExecutionPlanList { get; set; }
        #endregion

        #region 工厂模型 — string FacilityName
        /// <summary>
        /// 工厂模型
        /// </summary>
        [DependencyProperty]
        public string FacilityName { get; set; }
        #endregion

        #region 工厂模型Id — Guid FacilityId
        /// <summary>
        /// 工厂模型Id
        /// </summary>
        [DependencyProperty]
        public Guid? FacilityId { get; set; }
        #endregion
    }
}
